Joachim Noer's profile

Shipyard at night




For this project I wanted to explore how much I can make work in a procedural way, while also using some input as bitmaps and/or texture painting.



Geometry Nodes

The container generator


The generator in action. The parameters are pretty self explanatory.
Length and width extends the container grid in X amount of containers on the Y or X axis.
The seed randomizes the height rows, between 1, 2 or 3 containers in height.
Length and width gap sets the gap between each container on ground level.
Width randomness gives the ground level containers a bit of randomness on the X axis.


Container grids nodes.
I use two Mesh lines instanced on the X and Y axis to create the grid. 
Then I instances Mesh lines on their points again in the Z axis to get the different levels. There is a few noise maps to randomly select the points on level 2 and 3, to get random number of containers in the height.



Light and cone generator


The cones and lights are both distrubiuted on curves, which make them very easy to place.


GeoNode setup for the Cones.
The lights and cones run on almost identical setup, but the lights have no randomness applied to them, but instead are rather aligned to the curves normals, so they are lined up in a logical matter.
Both the light and cone objects are imported to GeoNodes through their Collection's.


Shaders

Ground shader(Asphalt)
I had this idea, that all these stripes, borders and lines one often see at a ship/container yard could easily be placed and linked to dummy objects(empties in blender), for ease of moving it as needed.


Shader setup for the Asphalt.
It is starting to get a bit messy, so if I were to add more of the white or yellow lines I would probably start grouping instead of framing, and then just keep adding mix nodes as needed.


All the lines with same color are mixed together, so I end up with a mask in the end, which I can apply wear and tear or any kind of effect on. Then use that to get the diffuse, roughness and normal map.


(Inside the GeoNode group)
I use the empties object coordinates and then  color ramps to restrict the lines as I wanted(and to keep them close to the empties).
The other white lines have almost the same setup, but just without the node setup that concerns "Wave Texture".


For the little cracks around. I decided to go with texture painting. 
I got some decent results with doing it fully procedurally, but to get the cracks where I wanted them, the amount of masking I had to do was starting to feel a bit counterintuitive towards the whole point of proceduralism. Especially considering I was relying heavy on multiplie Ambient Occlusion maps with a lot of samples.
And anyways, who dosnt love to paint cracks on stuff!?


The crack pattern is a simple Voronoi texture, which has its vectors slightly mixed by a Noise map, so I get curved lines from the Voronoi, that noise map also have its scale vector affected by another Noise map, so I get a lot of variance in the actual size of the cracks.


Containers

The different colors are assigned through an Object Node, using the Random parameter, which gives me a random black and white texture from value of 0 - 1. 
Also a small masking operation to place the logo of the container.


Shipyard at night
Published:

Owner

Shipyard at night

Published: